ããã³ããšã³ãããã©ãŒãã³ã¹APIãæ·±ãæãäžããããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ãšãªãœãŒã¹ã¿ã€ãã³ã°ã«çŠç¹ãåœãŠãŸãããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã枬å®ã»æé©åããäžçäžã®ãŠãŒã¶ãŒã«å¯Ÿå¿ããæ¹æ³ãåŠã³ãŸãããã
ããã³ããšã³ãããã©ãŒãã³ã¹APIïŒããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ãšãªãœãŒã¹ã¿ã€ãã³ã°ã®ç¿åŸ
仿¥ã®ããžã¿ã«ç°å¢ã«ãããŠããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã¯æãéèŠã§ããé ããŠã§ããµã€ãã¯ãŠãŒã¶ãŒã®äžæºãé«ãçŽåž°çããããŠæçµçã«ã¯åçã®æå€±ã«ã€ãªããå¯èœæ§ããããŸããããã³ããšã³ãããã©ãŒãã³ã¹APIã¯ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã®æ§ã ãªåŽé¢ã枬å®ã»åæããããã®åŒ·åãªããŒã«ãæäŸããããã«ããã¯ãç¹å®ããŠãããéããããå¿çæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®ããã«æé©åããããšãå¯èœã«ããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãããã²ãŒã·ã§ã³ã¿ã€ãã³ã°APIãšãªãœãŒã¹ã¿ã€ãã³ã°APIãæ¢æ±ããäžçäžã®éçºè åãã«å®è·µçãªäŸãšå®è¡å¯èœãªæŽå¯ãæäŸããŸãã
ããã©ãŒãã³ã¹ã¢ãã¿ãªã³ã°ã®å¿ èŠæ§ãçè§£ãã
APIã®è©³çްã«å ¥ãåã«ããªãããã©ãŒãã³ã¹ã¢ãã¿ãªã³ã°ãéèŠãªã®ããçè§£ããŸãããïŒ
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒ é«éãªãŠã§ããµã€ãã¯ããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã€ãªããããŠãŒã¶ãŒæºè¶³åºŠãšãšã³ã²ãŒãžã¡ã³ããé«ããŸãã
- æ€çŽ¢ãšã³ãžã³æé©åïŒSEOïŒïŒ Googleã®ãããªæ€çŽ¢ãšã³ãžã³ã¯ããŠã§ããµã€ãã®é床ãã©ã³ãã³ã°èŠå ãšããŠèæ ®ããŸãã
- ã³ã³ããŒãžã§ã³çïŒ é«éãªãŠã§ããµã€ãã¯ããã°ãã°ããé«ãã³ã³ããŒãžã§ã³çãèªããŸãããŠã§ããµã€ãã®å¿çæ§ãé«ããã°ããŠãŒã¶ãŒãè³Œå ¥ãå®äºãããããµãŒãã¹ã«ç»é²ãããããå¯èœæ§ãé«ããªããŸãã
- ã¢ãã€ã«ããã©ãŒãã³ã¹ïŒ ã¢ãã€ã«ããã€ã¹ã®å©çšãå¢å ããã«ã€ããŠãã¢ãã€ã«ããã©ãŒãã³ã¹ã®æé©åã¯äžå¯æ¬ ã§ãã
- ã°ããŒãã«ãªãŒãïŒ äžçã®ããŸããŸãªå°åã®ãŠãŒã¶ãŒã¯ãç°ãªããããã¯ãŒã¯ç¶æ³ãçµéšããå¯èœæ§ããããŸããããã©ãŒãã³ã¹ã¢ãã¿ãªã³ã°ã¯ãå Žæã«é¢ãããããã¹ãŠã®ãŠãŒã¶ãŒã«äžè²«ãããšã¯ã¹ããªãšã³ã¹ãä¿èšŒããã®ã«åœ¹ç«ã¡ãŸãã
ããã³ããšã³ãããã©ãŒãã³ã¹APIã®ç޹ä»
ããã³ããšã³ãããã©ãŒãã³ã¹APIã¯ããŠã§ãããŒãžã®è©³çްãªããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãžã®ã¢ã¯ã»ã¹ãæäŸããJavaScriptã€ã³ã¿ãŒãã§ãŒã¹ã®ã³ã¬ã¯ã·ã§ã³ã§ããããã«ãããéçºè ã¯ããŒãžã®èªã¿èŸŒã¿ããªãœãŒã¹ã®ååŸãã€ãã³ãã®åŠçã«ãããæéãæž¬å®ã§ããŸãããã®æ å ±ã¯ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®ããã«ãŠã§ããµã€ããæé©åããããã«äœ¿çšã§ããŸãã
ã³ã¢ã€ã³ã¿ãŒãã§ãŒã¹ã¯Performanceã§ãwindow.performanceãéããŠã¢ã¯ã»ã¹ã§ããŸãããã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãããŸããŸãªããã©ãŒãã³ã¹é¢é£ããŒã¿ã«ã¢ã¯ã»ã¹ããããã®ã¡ãœãããšããããã£ãæäŸããŸãã
ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°APIïŒããŒãžèªã¿èŸŒã¿ããã©ãŒãã³ã¹ã®æž¬å®
ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°APIã¯ãããŒãžèªã¿èŸŒã¿ããã»ã¹ã®ããŸããŸãªæ®µéã«é¢ãã詳现ãªã¿ã€ãã³ã°æ å ±ãæäŸããŸããããã«ãããé å»¶ãã©ãã§çºçããŠããããæ£ç¢ºã«ç¹å®ããæé©åã®åãçµã¿ãããã«éäžãããããšãã§ããŸãã
ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ãæäŸããäž»èŠã¡ããªã¯ã¹
- navigationStart: ãã©ãŠã¶ãããŒãžã®èªã¿èŸŒã¿ãéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- unloadEventStart: åã®ããŒãžã®ã¢ã³ããŒãã€ãã³ããéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- unloadEventEnd: åã®ããŒãžã®ã¢ã³ããŒãã€ãã³ããçµäºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- redirectStart: ãªãã€ã¬ã¯ããéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- redirectEnd: ãªãã€ã¬ã¯ããçµäºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- fetchStart: ãã©ãŠã¶ãããã¥ã¡ã³ãã®ååŸãéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- domainLookupStart: ãã¡ã€ã³åã®ã«ãã¯ã¢ãããéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- domainLookupEnd: ãã¡ã€ã³åã®ã«ãã¯ã¢ãããçµäºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- connectStart: ãã©ãŠã¶ããµãŒããŒãžã®æ¥ç¶ç¢ºç«ãéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- connectEnd: ãã©ãŠã¶ããµãŒããŒãžã®æ¥ç¶ç¢ºç«ãå®äºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- secureConnectionStart: ãã©ãŠã¶ãã»ãã¥ã¢ãªæ¥ç¶ã®ãã³ãã·ã§ã€ã¯ãéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- requestStart: ãã©ãŠã¶ããµãŒããŒã«ããã¥ã¡ã³ãããªã¯ãšã¹ããå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- responseStart: ãã©ãŠã¶ããµãŒããŒããã¬ã¹ãã³ã¹ã®æåã®ãã€ããåä¿¡ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- responseEnd: ãã©ãŠã¶ããµãŒããŒããã®ã¬ã¹ãã³ã¹ã®åä¿¡ãå®äºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- domLoading: ãã©ãŠã¶ãHTMLããã¥ã¡ã³ãã®è§£æãéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- domInteractive: ãã©ãŠã¶ãHTMLããã¥ã¡ã³ãã®è§£æãå®äºããDOMãæºåå®äºãšãªã£ããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- domContentLoadedEventStart: DOMContentLoadedã€ãã³ããéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- domContentLoadedEventEnd: DOMContentLoadedã€ãã³ããçµäºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- domComplete: ãã©ãŠã¶ãHTMLããã¥ã¡ã³ãã®è§£æãå®äºãããã¹ãŠã®ãªãœãŒã¹ãèªã¿èŸŒãŸãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- loadEventStart: ããŒãã€ãã³ããéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- loadEventEnd: ããŒãã€ãã³ããçµäºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ããŒã¿ãžã®ã¢ã¯ã»ã¹
performance.timingããããã£ã䜿çšããŠããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããŸãïŒ
const navigationTiming = performance.timing;
console.log('Navigation Start:', navigationTiming.navigationStart);
console.log('Domain Lookup Time:', navigationTiming.domainLookupEnd - navigationTiming.domainLookupStart);
console.log('Connect Time:', navigationTiming.connectEnd - navigationTiming.connectStart);
console.log('Response Time:', navigationTiming.responseEnd - navigationTiming.responseStart);
console.log('DOM Interactive:', navigationTiming.domInteractive - navigationTiming.navigationStart);
console.log('DOM Complete:', navigationTiming.domComplete - navigationTiming.navigationStart);
console.log('Load Time:', navigationTiming.loadEventEnd - navigationTiming.navigationStart);
ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ããŒã¿ã®è§£é
ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ããŒã¿ãåæããããšã§ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã«é¢ãã貎éãªæŽå¯ãåŸãããšãã§ããŸããäŸãã°ïŒ
- é«ãDNSã«ãã¯ã¢ããæéïŒ DNSãããã€ããŒã®åé¡ãDNS解決ã®é å»¶ã®å¯èœæ§ã瀺ããŸãã
- é«ãæ¥ç¶æéïŒ ãµãŒããŒã®ãããã¯ãŒã¯æ¥ç¶æ§ã®åé¡ããTLSãã³ãã·ã§ã€ã¯ã®é å»¶ã瀺åããŸãã
- é«ãã¬ã¹ãã³ã¹æéïŒ ãµãŒããŒãµã€ãã®åŠçãé ãããŸãã¯ã¬ã¹ãã³ã¹ãµã€ãºã倧ããããšã瀺ããŸãã
- é«ãDOMã€ã³ã¿ã©ã¯ãã£ãæéïŒ éå¹çãªJavaScriptã³ãŒããè€éãªDOMæ§é ã瀺åããŸãã
- é«ãDOMã³ã³ããªãŒãæéïŒ ç»åãã¹ã¯ãªãããã¹ã¿ã€ã«ã·ãŒããªã©ã®ãªãœãŒã¹ã®èªã¿èŸŒã¿ãé ãããšã瀺ããŸãã
äŸïŒæåã®ãã€ããŸã§ã®æéïŒTTFBïŒã®èšç®
æåã®ãã€ããŸã§ã®æéïŒTTFBïŒã¯ããã©ãŠã¶ããµãŒããŒããããŒã¿ã®æåã®ãã€ããåä¿¡ãããŸã§ã«ãããæéãæž¬å®ããéèŠãªã¡ããªã¯ã¹ã§ããäœãTTFBã¯ãé«éãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«äžå¯æ¬ ã§ãã
const ttfb = performance.timing.responseStart - performance.timing.navigationStart;
console.log('Time to First Byte (TTFB):', ttfb, 'ms');
é«ãTTFBã¯ããµãŒããŒãµã€ãã®åŠçãé ãããããã¯ãŒã¯ã®é å»¶ããŸãã¯ãµãŒããŒã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®åé¡ã«ãã£ãŠåŒãèµ·ããããå¯èœæ§ããããŸãããµãŒããŒèšå®ã®æé©åãã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒã®äœ¿çšããããã¯ãŒã¯é å»¶ã®æå°åãTTFBã®åæžã«åœ¹ç«ã¡ãŸãã
ãªãœãŒã¹ã¿ã€ãã³ã°APIïŒãªãœãŒã¹èªã¿èŸŒã¿ããã©ãŒãã³ã¹ã®æž¬å®
ãªãœãŒã¹ã¿ã€ãã³ã°APIã¯ãç»åãã¹ã¯ãªãããã¹ã¿ã€ã«ã·ãŒãããã©ã³ããªã©ããŠã§ãããŒãžäžã®åã ã®ãªãœãŒã¹ã®èªã¿èŸŒã¿ã«é¢ãã詳现ãªã¿ã€ãã³ã°æ å ±ãæäŸããŸããããã«ãããã©ã®ãªãœãŒã¹ã®èªã¿èŸŒã¿ã«æãæéãããã£ãŠããããç¹å®ããããã«å¿ããŠæé©åããããšãã§ããŸãã
ãªãœãŒã¹ã¿ã€ãã³ã°ãæäŸããäž»èŠã¡ããªã¯ã¹
- name: ãªãœãŒã¹ã®URLã
- initiatorType: ãªãœãŒã¹ãªã¯ãšã¹ããéå§ããèŠçŽ ã®ã¿ã€ãïŒäŸïŒ
img,script,linkïŒã - startTime: ãã©ãŠã¶ããªãœãŒã¹ã®ååŸãéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- redirectStart: ãªãã€ã¬ã¯ããéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- redirectEnd: ãªãã€ã¬ã¯ããçµäºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- fetchStart: ãã©ãŠã¶ããªãœãŒã¹ã®ååŸãéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- domainLookupStart: ãã¡ã€ã³åã®ã«ãã¯ã¢ãããéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- domainLookupEnd: ãã¡ã€ã³åã®ã«ãã¯ã¢ãããçµäºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- connectStart: ãã©ãŠã¶ããµãŒããŒãžã®æ¥ç¶ç¢ºç«ãéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- connectEnd: ãã©ãŠã¶ããµãŒããŒãžã®æ¥ç¶ç¢ºç«ãå®äºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- secureConnectionStart: ãã©ãŠã¶ãã»ãã¥ã¢ãªæ¥ç¶ã®ãã³ãã·ã§ã€ã¯ãéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- requestStart: ãã©ãŠã¶ããµãŒããŒã«ãªãœãŒã¹ããªã¯ãšã¹ããå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- responseStart: ãã©ãŠã¶ããµãŒããŒããã¬ã¹ãã³ã¹ã®æåã®ãã€ããåä¿¡ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- responseEnd: ãã©ãŠã¶ããµãŒããŒããã®ã¬ã¹ãã³ã¹ã®åä¿¡ãå®äºãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- duration: ãªãœãŒã¹ã®èªã¿èŸŒã¿ã«ããã£ãåèšæéã
ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãžã®ã¢ã¯ã»ã¹
performance.getEntriesByType('resource')ã¡ãœããã䜿çšããŠãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããŸãïŒ
const resourceTimings = performance.getEntriesByType('resource');
resourceTimings.forEach(resource => {
console.log('Resource Name:', resource.name);
console.log('Initiator Type:', resource.initiatorType);
console.log('Duration:', resource.duration, 'ms');
});
ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ã®è§£é
ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãåæããããšã§ãèªã¿èŸŒã¿ãé ããªãœãŒã¹ãç¹å®ããããé«éãªèªã¿èŸŒã¿æéã®ããã«æé©åããã®ã«åœ¹ç«ã¡ãŸããäŸãã°ïŒ
- 倧ããªç»åïŒ ç»åãå§çž®ããé©åãªãã¡ã€ã«åœ¢åŒïŒäŸïŒWebPïŒã䜿çšããããšã§æé©åããŸãã
- æé©åãããŠããªãã¹ã¯ãªãããšã¹ã¿ã€ã«ã·ãŒãïŒ ã¹ã¯ãªãããšã¹ã¿ã€ã«ã·ãŒããæå°åã»å§çž®ããŠãã¡ã€ã«ãµã€ãºãåæžããŸãã
- èªã¿èŸŒã¿ãé ããã©ã³ãïŒ ãµãã»ããåãfont-displayããããã£ã䜿çšããŠãŠã§ããã©ã³ããå¹ççã«å©çšããŸãã
- ãµãŒãããŒãã£ãªãœãŒã¹ïŒ ãµãŒãããŒãã£ãªãœãŒã¹ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ãè©äŸ¡ããå¿ èŠã§ããã°ä»£æ¿æ¡ãæ€èšããŸãã
äŸïŒèªã¿èŸŒã¿ã®é ãç»åã®ç¹å®
ãã®äŸã§ã¯ããªãœãŒã¹ã¿ã€ãã³ã°APIã䜿çšããŠèªã¿èŸŒã¿ã®é ãç»åãç¹å®ããæ¹æ³ã瀺ããŸãïŒ
const resourceTimings = performance.getEntriesByType('resource');
const slowImages = resourceTimings.filter(resource => resource.initiatorType === 'img' && resource.duration > 500);
if (slowImages.length > 0) {
console.warn('Slow-loading images detected:');
slowImages.forEach(image => {
console.log('Image URL:', image.name);
console.log('Duration:', image.duration, 'ms');
});
}
èªã¿èŸŒã¿ã®é ãç»åãç¹å®ããããå§çž®ãé©åãªãµã€ãºãžã®å€æŽãé å»¶èªã¿èŸŒã¿æè¡ã®äœ¿çšã«ãã£ãŠæé©åã§ããŸãã
å®è·µçãªäŸãšãŠãŒã¹ã±ãŒã¹
å®äžçã®ã·ããªãªïŒEã³ããŒã¹ãµã€ãã®æé©å
äžçäžã®é¡§å®¢ã«ãµãŒãã¹ãæäŸããEã³ããŒã¹ãµã€ããèããŠã¿ãŸããããããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ãšãªãœãŒã¹ã¿ã€ãã³ã°ã®ããŒã¿ãåæãããšã以äžã®åé¡ãæããã«ãªããŸãïŒ
- ã¢ãžã¢ã®ãŠãŒã¶ãŒã«å¯Ÿããé«ãTTFBïŒ ãªãªãžã³ãµãŒããŒãšã¢ãžã¢ã®ãŠãŒã¶ãŒéã®ãµãŒããŒãµã€ãåŠçã®é å»¶ãŸãã¯ãããã¯ãŒã¯é å»¶ã瀺ããŸãã
- èªã¿èŸŒã¿ãé ãååç»åïŒ ç»åããŠã§ãçšã«æé©åãããŠããããé·ãèªã¿èŸŒã¿æéãçºçããŠããŸãã
- æé©åãããŠããªãJavaScriptãã¡ã€ã«ïŒ JavaScriptãã¡ã€ã«ãæå°åã»å§çž®ãããŠãããããã¡ã€ã«ãµã€ãºãå¢å ããŠããŸãã
ãããã®èª¿æ»çµæã«åºã¥ãã以äžã®æé©åã宿œã§ããŸãïŒ
- ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒã®å®è£ ïŒ ãŠã§ããµã€ãã®ã³ã³ãã³ããäžçäžã®è€æ°ã®ãµãŒããŒã«åæ£ãããç°ãªãå°åã®ãŠãŒã¶ãŒã®é å»¶ãåæžããŸãã
- ååç»åã®æé©åïŒ ImageOptimãTinyPNGã®ãããªããŒã«ã䜿çšããŠç»åãå§çž®ããWebPã®ãããªé©åãªãã¡ã€ã«åœ¢åŒã䜿çšããŸãã
- JavaScriptãã¡ã€ã«ã®æå°åãšå§çž®ïŒ UglifyJSãTerserã®ãããªããŒã«ã§JavaScriptãã¡ã€ã«ãæå°åããGzipãBrotliã§å§çž®ããŸãã
- ç»åã®é å»¶èªã¿èŸŒã¿ïŒ ãã¡ãŒã¹ããã¥ãŒä»¥äžã®ç»åã®é å»¶èªã¿èŸŒã¿ãå®è£ ããåæããŒãžã®èªã¿èŸŒã¿æéãæ¹åããŸãã
ãããã®æé©åã宿œããåŸããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã¯å€§å¹ ã«åäžããããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãé«ãã³ã³ããŒãžã§ã³çãæ¹åãããSEOã©ã³ãã³ã°ã«ã€ãªãããŸãã
ã¢ãã€ã«ããã©ãŒãã³ã¹ã®æé©å
ã¢ãã€ã«ãŠãŒã¶ãŒã¯ãã¹ã¯ããããŠãŒã¶ãŒã«æ¯ã¹ãŠãããã¯ãŒã¯æ¥ç¶ãé ãããšããããããŸããã¢ãã€ã«ããã€ã¹ã§ã·ãŒã ã¬ã¹ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«ã¯ãã¢ãã€ã«ããã©ãŒãã³ã¹ã®æé©åãäžå¯æ¬ ã§ãã
以äžã¯ãã¢ãã€ã«ã«ç¹åããæé©åæè¡ã§ãïŒ
- ã¬ã¹ãã³ã·ãã€ã¡ãŒãžã®äœ¿çšïŒ ããã€ã¹ã®ç»é¢ãµã€ãºã«åºã¥ããŠç°ãªããµã€ãºã®ç»åãæäŸãããããã¯ãŒã¯çµç±ã§è»¢éãããããŒã¿éãåæžããŸãã
- ã¿ããæäœã®æé©åïŒ ãã¿ã³ããªã³ã¯ãååã«å€§ãããã¿ããããã€ã¹ã§ç°¡åã«ã¿ããã§ããããã«ååãªééãããããšã確èªããŸãã
- HTTPãªã¯ãšã¹ãã®æå°åïŒ CSSãšJavaScriptãã¡ã€ã«ãçµåããã¯ãªãã£ã«ã«CSSãã€ã³ã©ã€ã³åããCSSã¹ãã©ã€ãã䜿çšããããšã§HTTPãªã¯ãšã¹ãã®æ°ãæžãããŸãã
- ãã¡ãŒã¹ããã¥ãŒã³ã³ãã³ãã®åªå ïŒ ç»é¢ã«æåã«è¡šç€ºãããã³ã³ãã³ããå ã«èªã¿èŸŒã¿ããŠã§ããµã€ãã®äœæããã©ãŒãã³ã¹ãåäžãããŸãã
ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ãšãªãœãŒã¹ã¿ã€ãã³ã°ãè¶ ããŠïŒä»ã®ããã©ãŒãã³ã¹APIã®æ¢æ±
ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ãšãªãœãŒã¹ã¿ã€ãã³ã°ã¯äžå¯æ¬ ã§ãããããã³ããšã³ãããã©ãŒãã³ã¹APIã¯ã詳现ãªããã©ãŒãã³ã¹åæã®ããã®ä»ã®è±å¯ãªããŒã«ãæäŸããŸãïŒ
- User Timing API: ã«ã¹ã¿ã ã®ããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãå®çŸ©ããã¢ããªã±ãŒã·ã§ã³ã§ç¹å®ã®ã€ãã³ããçºçãããŸã§ã«ãããæéãæž¬å®ã§ããŸãã
- Long Tasks API: ã¡ã€ã³ã¹ã¬ããããããã¯ããã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ã«åœ±é¿ãäžããé·æéå®è¡ã¿ã¹ã¯ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- Paint Timing API: First PaintïŒFPïŒãFirst Contentful PaintïŒFCPïŒãªã©ãããŒãžã®ã¬ã³ããªã³ã°ã«é¢é£ããã¡ããªã¯ã¹ãæäŸããŸãã
- Largest Contentful Paint (LCP): ãã¥ãŒããŒãå ã®æå€§ã®ã³ã³ãã³ãèŠçŽ ã衚瀺ããããŸã§ã«ãããæéãæž¬å®ããŸãã
- Cumulative Layout Shift (CLS): ããŒãžã®èªã¿èŸŒã¿äžã«çºçããäºæããªãã¬ã€ã¢ãŠãã·ããã®éãæž¬å®ããŸãã
- Event Timing API: ã¯ãªãã¯ãããŒãã¬ã¹ã€ãã³ããªã©ããŠãŒã¶ãŒãšããŒãžã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã«é¢ãã詳现ãªã¿ã€ãã³ã°æ å ±ãæäŸããŸãã
ããã©ãŒãã³ã¹ããŒã¿åæããŒã«
ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ãšãªãœãŒã¹ã¿ã€ãã³ã°ã®ããŒã¿ãåæããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããã®ã«åœ¹ç«ã€ããã€ãã®ããŒã«ããããŸãïŒ
- ãã©ãŠã¶éçºè ããŒã«ïŒ ã»ãšãã©ã®ã¢ãã³ãã©ãŠã¶ã«ã¯ãããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ãšãªãœãŒã¹ã¿ã€ãã³ã°ã®ããŒã¿ãæ€æ»ãããããã¯ãŒã¯ãªã¯ãšã¹ããåæããJavaScriptã³ãŒãããããã¡ã€ãªã³ã°ã§ããçµã¿èŸŒã¿ã®éçºè ããŒã«ãæäŸãããŠããŸãã
- WebPageTest: ããŸããŸãªå Žæããã©ãŠã¶ãããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ããã¹ãã§ããç¡æã®ãªã³ã©ã€ã³ããŒã«ã§ãã
- Lighthouse: ãŠã§ãããŒãžã®å質ãåäžãããããã®ãªãŒãã³ãœãŒã¹ã®èªååããŒã«ã§ããããã©ãŒãã³ã¹ãã¢ã¯ã»ã·ããªãã£ãããã°ã¬ãã·ããŠã§ãã¢ããªãSEOãªã©ã®ç£æ»æ©èœããããŸãã
- Google PageSpeed Insights: ãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãåæããæ¹åã®ããã®æšå¥šäºé ãæäŸããç¡æã®ãªã³ã©ã€ã³ããŒã«ã§ãã
- New Relic, Datadog, ãã®ä»ã®APMããŒã«ïŒ ãŠã§ãã¢ããªã±ãŒã·ã§ã³åãã®è©³çްãªããã©ãŒãã³ã¹ã¢ãã¿ãªã³ã°ããã³åææ©èœãæäŸããŸãã
ãŠã§ãããã©ãŒãã³ã¹æé©åã®ãã¹ããã©ã¯ãã£ã¹
以äžã¯ããŠã§ãããã©ãŒãã³ã¹æé©åã®ããã®äžè¬çãªãã¹ããã©ã¯ãã£ã¹ã§ãïŒ
- HTTPãªã¯ãšã¹ãã®æå°åïŒ CSSãšJavaScriptãã¡ã€ã«ãçµåããCSSã¹ãã©ã€ãã䜿çšããã¯ãªãã£ã«ã«CSSãã€ã³ã©ã€ã³åããããšã§HTTPãªã¯ãšã¹ãã®æ°ãæžãããŸãã
- ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒã®äœ¿çšïŒ ãŠã§ããµã€ãã®ã³ã³ãã³ããäžçäžã®è€æ°ã®ãµãŒããŒã«åæ£ãããç°ãªãå°åã®ãŠãŒã¶ãŒã®é å»¶ãåæžããŸãã
- ç»åã®æé©åïŒ ç»åãå§çž®ããé©åãªãã¡ã€ã«åœ¢åŒïŒäŸïŒWebPïŒã䜿çšããã¬ã¹ãã³ã·ãã€ã¡ãŒãžã䜿çšããŸãã
- CSSãšJavaScriptã®æå°åãšå§çž®ïŒ CSSãšJavaScriptãã¡ã€ã«ã®ãã¡ã€ã«ãµã€ãºãæå°åã»å§çž®ããŠåæžããŸãã
- ãã©ãŠã¶ãã£ãã·ã¥ã®æŽ»çšïŒ ãµãŒããŒãèšå®ããŠé©åãªãã£ãã·ã¥ããããŒãèšå®ãããã©ãŠã¶ãéçãªãœãŒã¹ããã£ãã·ã¥ã§ããããã«ããŸãã
- ãŠã§ããã©ã³ãã®æé©åïŒ ãŠã§ããã©ã³ãããµãã»ããåããfont-displayããããã£ã䜿çšããèªãã¡ã€ã³ã§ãã©ã³ãããã¹ãããŸãã
- éã¯ãªãã£ã«ã«ãªãœãŒã¹ã®èªã¿èŸŒã¿ãé å»¶ãããïŒ ãã¡ãŒã¹ããã¥ãŒä»¥äžã®ç»åã«ã¯é å»¶èªã¿èŸŒã¿ã䜿çšããéã¯ãªãã£ã«ã«ãªJavaScriptãã¡ã€ã«ã®èªã¿èŸŒã¿ãé å»¶ãããŸãã
- 宿çãªããã©ãŒãã³ã¹ç£èŠïŒ ããã³ããšã³ãããã©ãŒãã³ã¹APIãä»ã®ããŒã«ã䜿çšããŠãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠããããã©ãŒãã³ã¹ã®åé¡ãç©æ¥µçã«ç¹å®ããŠå¯ŸåŠããŸãã
çµè«
ããã³ããšã³ãããã©ãŒãã³ã¹APIãç¹ã«ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°APIãšãªãœãŒã¹ã¿ã€ãã³ã°APIã¯ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã«é¢ãã貎éãªæŽå¯ãæäŸããŸãããããã®APIãçè§£ãæŽ»çšããããšã§ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ãããŠã§ããµã€ããããé«éãªèªã¿èŸŒã¿æéã®ããã«æé©åããæçµçã«ã¯äžçäžã®èŠèŽè ã«ããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããšãã§ããŸãããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠããå¿ èŠã«å¿ããŠæé©åæŠç¥ãé©å¿ãããæä»£ã®å ãè¡ããé«éã§å¿çæ§ãé«ããé åçãªãªã³ã©ã€ã³äœéšã確ä¿ããããšãå¿ããªãã§ãã ããã